٩(๑> ₃ <)۶з
嗨,我是wec,今天是DAY 21。
給定一個整數數組prices
,表示每一天的股票價格,以及一個整數fee
,表示每次交易的手續費。目標是找到最佳的交易策略,獲得最大的利潤,考慮到每次交易時需扣除的手續費。
第1步: 設置total_profit
為 0。
第2步: 從第二天開始遍歷價格組數,如果今天的價格比昨天高,就計算利潤並扣除手續費。
第3步: 返回total_profit
,確保不小於 0。
程式碼:
def max_profit(prices, fee)
total_profit = 0
(1...prices.length).each do |i|
if prices[i] > prices[i - 1]
total_profit += prices[i] - prices[i - 1] - fee
end
end
total_profit > 0 ? total_profit : 0
end
貪婪算法: 時間複雜度為O(n),n為組數長度。
➡️ 解題的核心在於根據股票價格的變化來決定最佳的買賣策略,使用貪婪算法可以簡化計算過程,根據價格的上漲情況來累積利潤。雖然貪婪算法在考慮手續費的情況下可能無法獲得最佳解(這題用動態規劃其實會更好,但貪婪演算法總是要出場一次><),但簡化邏輯也可以算出答案⑉¯ ꇴ ¯⑉!!
那麽,以上就是今天的內容!
相信IT人動腦時都要吃點東西,所以今天邊寫邊吃多力多滋海鮮口味。
明天要說:Ruby精選刷題!Medium路跑D-14(>∀・)⌒☆